==========================================================================================
Custom States
==========================================================================================
These are the custom states that I often use. Most of them are already in the KFM Template 
but I thought I list them here either way.

==========================================================================================

==========================================================================================
Wallbounce with screenbound
==========================================================================================

==========================================================================================
R_KFM.cns
==========================================================================================

;---------------------------------------------------------------------------
[Statedef 5800]
type    = A
movetype = H
physics = N

[State 1403,1]
type = Velset
trigger1 = time < 30
x = 0
y = 0

[State 1403, 2] 
type = ChangeAnim
trigger1 = Time = 0
value = 5030

[State 1403, 3]
type = ChangeState
trigger1 = HitShakeOver = 1
value = 5801

[State 1403, 3]
type = screenbound
trigger1 = 1
value = 0
movecamera = 0,0

[Statedef 5801]
type    = A
movetype = H
physics = N

[State 1403, 3]
type = screenbound
trigger1 = 1
value = 0
movecamera = 0,0

[State 1404,1]
type = Velset
trigger1 = time = 1 
x = -20
y = 0

[State 1404, ChangeState]
type = selfstate
trigger1 = time >= 23
trigger1 = Pos Y >= 0
value = 5100

[State 1200, 6]
type = explod
trigger1 = BackEdgeBodyDist <= 5
trigger2 = FrontEdgeBodyDist <= 5
anim = F72
id = 1
pos = 0,-50
facing = 1
sprpriority = 3
bindtime = 1
ownpal = 1
ignorehitpause = 1
persistent = 0

[State 1404, 2]
type = ChangeState
triggerall = time > 1
trigger1 = BackEdgeBodyDist <= 5
trigger2 = FrontEdgeBodyDist <= 5
value = 5802

[Statedef 5802]
type    = A
movetype = H
physics = N
sprpriority = 0
velset = 0,0

[State 230, 1]
type = envshake
trigger1 = !time
time = 10
freq = 80
ampl = -2

[State 1403, 3]
type = screenbound
trigger1 = 1
value = 1
movecamera = 0,0

[State 1405, 4]
type = PlaySnd
trigger1 = time = 1
value = F7, 2

[State 1405,1]
type = Velset
trigger1 = time = 20
x = .3
y = -5

[State 1405,2]
type = VelAdd
trigger1 = time >= 20
y = 0.8

[State 1405, 2] 
type = ChangeAnim
trigger1 = Time = 0
value = 5030

[State 1405, 3]
type = ChangeAnim
trigger1 = animtime = 0
value = 5051

[State 1405, ChangeState]
type = selfstate
trigger1 = time > 20
value = 5050

[State 1405, ChangeState]
type = selfstate
trigger1 = time > 20
trigger1 = Pos Y >= 0
value = 5100

;---------------------------------------------------------------------------

==========================================================================================
Ground bounce into airborn
==========================================================================================

;---------------------------------------------------------------------------
[Statedef 5825]
type    = A
movetype = H
physics = N

[State 812,1]
type = Velset
trigger1 = time < 15
x = 0
y = 0

[State 812,]
type = PlayerPush
trigger1 = 1
value = 1

[State 812, 2] 
type = ChangeAnim
trigger1 = Time = 0
value = 5030

[State 812, 3]
type = ChangeState
trigger1 = HitShakeOver = 1
value = 5826

[Statedef 5826]
type    = A
movetype = H
physics = N

[State 812, 2] 
type = ChangeAnim
trigger1 = Time = 0
value = 5061

[State 813,1]
type = Velset
trigger1 = time = 1 
x = -5
y = 15

[State 813,2]
type = VelAdd
trigger1 = time > 1
y = 0.3

[State 813,]
type = PlayerPush
trigger1 = 1
value = 1

[State 813, 2]
type = ChangeState
triggerall = time > 1
trigger1 = Pos Y >= 0
value = 5827

[Statedef 5827]
type    = A
movetype = H
physics = N
sprpriority = 0

[State 814,1]
type = posset
trigger1 = !time
y = 0

[State 814,1]
type = velset
trigger1 = !time
x = 0
y = 0

[State 814,1]
type = Velset
trigger1 = time = 1
x = -.5
y = -5

[State 814,2]
type = VelAdd
trigger1 = time >= 1
y = 0.3

[State 814,]
type = PlayerPush
trigger1 = 1
value = 1

[State 814, 4]
type = PlaySnd
trigger1 = !time
value = F7, 2
persistent = 0

[State 1200, 6]
type = explod
trigger1 = !time
anim = F62
id = 1
pos = -10,0
facing = 1
sprpriority = 3
bindtime = 1
ownpal = 1
ignorehitpause = 1
persistent = 0
pausemovetime = 999
supermovetime = 999

[State 814, 2] 
type = ChangeAnim
trigger1 = !Time
value = 5160

[State 814, 3]
type = ChangeAnim
trigger1 = animtime = 0
trigger1 = anim = 5030
trigger1 = SelfAnimExist(5035)
value = 5035

[State 814, 4]
type = ChangeAnim
trigger1 = animtime = 0
trigger1 = anim = 5035
trigger1 = SelfAnimExist(5035)
value = 5050

[State 814, ChangeState]
type = selfstate
trigger1 = time = 1
value = 5035

;---------------------------------------------------------------------------

==========================================================================================
Ground slam 30 ticks until reset
==========================================================================================

;---------------------------------------------------------------------------
[Statedef 870]
Type    = A
MoveType= H
Physics = N
VelSet = 0,0

[State -1]
Type = ChangeAnim
Trigger1 = time = 0
Value = 5035

[State -1] 
Type = HitFallSet
Trigger1 = 1
Value = 0

[State 0, VelSet]
type = turn
trigger1 = !time
trigger1 = p2dist x < 0

[State 0, VelSet]
type = VelSet
trigger1 = !time
x = -7.75
y = 15

[State 814, 4]
type = PlaySnd
trigger1 = anim = 5110
value = F7, 2
persistent = 0

[State 1200, 6]
type = explod
trigger1 = anim = 5110
anim = F62
id = 1
pos = -8,0
facing = 1
sprpriority = 3
bindtime = 1
ownpal = 1
ignorehitpause = 1
persistent = 0
pausemovetime = 999
supermovetime = 999

[State -1]
Type = ChangeAnim
Trigger1 = (Vel Y >= 0) && (Pos Y >= -2)
Value = 5110

[State 0, PosSet]
type = PosSet
trigger1 = anim = 5110
y = 0

[State 0, VelSet]
type = VelSet
trigger1 = anim = 5110
y = 0
x = 0

[State 814,]
type = selfstate
triggerall = alive
triggerall = enemynear,stateno != 850
trigger1 = anim = 5110
trigger1 = time >= 35
value = 5120

[State 814,]
type = selfstate
triggerall = !alive
trigger1 = anim = 5110
trigger1 = time >= 35
value = 5150

;---------------------------------------------------------------------------

==========================================================================================
Random GetHit anim 35 tick reset (Use this for Standing multi-hit distortion/astral heat.)
==========================================================================================

;---------------------------------------------------------------------------
[Statedef 3100]
type    = S
movetype= H
physics = N
velset = 0,0
sprpriority = 1

[State 811, 1]
type = posset
Trigger1 = 1
x = 0
y = 0

[State 811, 1]
type = velset
Trigger1 = 1
x = 0

[State 811, 1]
type = ChangeAnim
Trigger1 = !time
value = ifelse(random<=450,5012,5002)

[State 811, 1]
type = ChangeAnim
Trigger1 = anim = 5002
trigger1 = animtime = 0
value = 5007

[State 811, 1]
type = ChangeAnim
Trigger1 = anim = 5012
trigger1 = animtime = 0
value = 5017

[State 811, 1]
type = selfstate
Trigger1 = time >= 35
value = 0
ctrl = 1

;---------------------------------------------------------------------------
